{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19",
    "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['test', 'samplesubmission', 'train']\n"
     ]
    }
   ],
   "source": [
    "# This Python 3 environment comes with many helpful analytics libraries installed\n",
    "# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n",
    "# For example, here's several helpful packages to load in \n",
    "\n",
    "import numpy as np # linear algebra\n",
    "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from IPython.core.pylabtools import figsize \n",
    "\n",
    "# import classfier models\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import cross_val_score, train_test_split\n",
    "\n",
    "# Input data files are available in the \"../input/\" directory.\n",
    "# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n",
    "\n",
    "import os\n",
    "print(os.listdir(\"../input\"))\n",
    "\n",
    "# Any results you write to the current directory are saved as output."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_data_path = '../input/train/train.csv'\n",
    "train_data = pd.read_csv(train_data_path, nrows=10000000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "_cell_guid": "79c7e3d0-c299-4dcb-8224-4455121ee9b0",
    "_uuid": "d629ff2d2480ee46fbb7e2d37f6b5fab8052498a"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 10000000 entries, 0 to 9999999\n",
      "Data columns (total 24 columns):\n",
      "id                  float64\n",
      "click               int64\n",
      "hour                int64\n",
      "C1                  int64\n",
      "banner_pos          int64\n",
      "site_id             object\n",
      "site_domain         object\n",
      "site_category       object\n",
      "app_id              object\n",
      "app_domain          object\n",
      "app_category        object\n",
      "device_id           object\n",
      "device_ip           object\n",
      "device_model        object\n",
      "device_type         int64\n",
      "device_conn_type    int64\n",
      "C14                 int64\n",
      "C15                 int64\n",
      "C16                 int64\n",
      "C17                 int64\n",
      "C18                 int64\n",
      "C19                 int64\n",
      "C20                 int64\n",
      "C21                 int64\n",
      "dtypes: float64(1), int64(14), object(9)\n",
      "memory usage: 1.8+ GB\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>click</th>\n",
       "      <th>hour</th>\n",
       "      <th>C1</th>\n",
       "      <th>banner_pos</th>\n",
       "      <th>site_id</th>\n",
       "      <th>site_domain</th>\n",
       "      <th>site_category</th>\n",
       "      <th>app_id</th>\n",
       "      <th>app_domain</th>\n",
       "      <th>app_category</th>\n",
       "      <th>device_id</th>\n",
       "      <th>device_ip</th>\n",
       "      <th>device_model</th>\n",
       "      <th>device_type</th>\n",
       "      <th>device_conn_type</th>\n",
       "      <th>C14</th>\n",
       "      <th>C15</th>\n",
       "      <th>C16</th>\n",
       "      <th>C17</th>\n",
       "      <th>C18</th>\n",
       "      <th>C19</th>\n",
       "      <th>C20</th>\n",
       "      <th>C21</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.000009e+18</td>\n",
       "      <td>0</td>\n",
       "      <td>14102100</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>ddd2926e</td>\n",
       "      <td>44956a24</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>15706</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.000017e+19</td>\n",
       "      <td>0</td>\n",
       "      <td>14102100</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>96809ac8</td>\n",
       "      <td>711ee120</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>15704</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>100084</td>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.000037e+19</td>\n",
       "      <td>0</td>\n",
       "      <td>14102100</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>b3cf8def</td>\n",
       "      <td>8a4875bd</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>15704</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>100084</td>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.000064e+19</td>\n",
       "      <td>0</td>\n",
       "      <td>14102100</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>e8275b8f</td>\n",
       "      <td>6332421a</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>15706</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>100084</td>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.000068e+19</td>\n",
       "      <td>0</td>\n",
       "      <td>14102100</td>\n",
       "      <td>1005</td>\n",
       "      <td>1</td>\n",
       "      <td>fe8cc448</td>\n",
       "      <td>9166c161</td>\n",
       "      <td>0569f928</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>9644d0bf</td>\n",
       "      <td>779d90c2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>18993</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>2161</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>157</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             id  click      hour    C1 ...   C18 C19     C20  C21\n",
       "0  1.000009e+18      0  14102100  1005 ...     0  35      -1   79\n",
       "1  1.000017e+19      0  14102100  1005 ...     0  35  100084   79\n",
       "2  1.000037e+19      0  14102100  1005 ...     0  35  100084   79\n",
       "3  1.000064e+19      0  14102100  1005 ...     0  35  100084   79\n",
       "4  1.000068e+19      0  14102100  1005 ...     0  35      -1  157\n",
       "\n",
       "[5 rows x 24 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.info()\n",
    "train_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id                  False\n",
       "click               False\n",
       "hour                False\n",
       "C1                  False\n",
       "banner_pos          False\n",
       "site_id             False\n",
       "site_domain         False\n",
       "site_category       False\n",
       "app_id              False\n",
       "app_domain          False\n",
       "app_category        False\n",
       "device_id           False\n",
       "device_ip           False\n",
       "device_model        False\n",
       "device_type         False\n",
       "device_conn_type    False\n",
       "C14                 False\n",
       "C15                 False\n",
       "C16                 False\n",
       "C17                 False\n",
       "C18                 False\n",
       "C19                 False\n",
       "C20                 False\n",
       "C21                 False\n",
       "dtype: bool"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看下是否有缺失\n",
    "train_data.isnull().any()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>click</th>\n",
       "      <th>hour</th>\n",
       "      <th>C1</th>\n",
       "      <th>banner_pos</th>\n",
       "      <th>device_type</th>\n",
       "      <th>device_conn_type</th>\n",
       "      <th>C14</th>\n",
       "      <th>C15</th>\n",
       "      <th>C16</th>\n",
       "      <th>C17</th>\n",
       "      <th>C18</th>\n",
       "      <th>C19</th>\n",
       "      <th>C20</th>\n",
       "      <th>C21</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>9.221663e+18</td>\n",
       "      <td>1.661357e-01</td>\n",
       "      <td>1.410217e+07</td>\n",
       "      <td>1.004979e+03</td>\n",
       "      <td>2.550293e-01</td>\n",
       "      <td>1.016063e+00</td>\n",
       "      <td>2.386843e-01</td>\n",
       "      <td>1.848285e+04</td>\n",
       "      <td>3.179269e+02</td>\n",
       "      <td>5.912548e+01</td>\n",
       "      <td>2.082423e+03</td>\n",
       "      <td>1.316058e+00</td>\n",
       "      <td>1.772594e+02</td>\n",
       "      <td>4.927169e+04</td>\n",
       "      <td>9.371292e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>5.320360e+18</td>\n",
       "      <td>3.722024e-01</td>\n",
       "      <td>5.770986e+01</td>\n",
       "      <td>9.959851e-01</td>\n",
       "      <td>4.586358e-01</td>\n",
       "      <td>4.866537e-01</td>\n",
       "      <td>7.036458e-01</td>\n",
       "      <td>4.869140e+03</td>\n",
       "      <td>2.520062e+01</td>\n",
       "      <td>4.641713e+01</td>\n",
       "      <td>5.935536e+02</td>\n",
       "      <td>1.379968e+00</td>\n",
       "      <td>3.237208e+02</td>\n",
       "      <td>5.004919e+04</td>\n",
       "      <td>6.752872e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>2.052565e+12</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>1.410210e+07</td>\n",
       "      <td>1.001000e+03</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>3.750000e+02</td>\n",
       "      <td>1.200000e+02</td>\n",
       "      <td>2.000000e+01</td>\n",
       "      <td>1.120000e+02</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>3.300000e+01</td>\n",
       "      <td>-1.000000e+00</td>\n",
       "      <td>1.300000e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>4.616747e+18</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>1.410211e+07</td>\n",
       "      <td>1.005000e+03</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>1.692000e+04</td>\n",
       "      <td>3.200000e+02</td>\n",
       "      <td>5.000000e+01</td>\n",
       "      <td>1.863000e+03</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>3.500000e+01</td>\n",
       "      <td>-1.000000e+00</td>\n",
       "      <td>3.300000e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>9.236241e+18</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>1.410220e+07</td>\n",
       "      <td>1.005000e+03</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>2.035200e+04</td>\n",
       "      <td>3.200000e+02</td>\n",
       "      <td>5.000000e+01</td>\n",
       "      <td>2.333000e+03</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>3.900000e+01</td>\n",
       "      <td>-1.000000e+00</td>\n",
       "      <td>7.900000e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.382024e+19</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>1.410221e+07</td>\n",
       "      <td>1.005000e+03</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>2.175900e+04</td>\n",
       "      <td>3.200000e+02</td>\n",
       "      <td>5.000000e+01</td>\n",
       "      <td>2.502000e+03</td>\n",
       "      <td>3.000000e+00</td>\n",
       "      <td>1.670000e+02</td>\n",
       "      <td>1.000840e+05</td>\n",
       "      <td>1.570000e+02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.844674e+19</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>1.410230e+07</td>\n",
       "      <td>1.012000e+03</td>\n",
       "      <td>7.000000e+00</td>\n",
       "      <td>5.000000e+00</td>\n",
       "      <td>5.000000e+00</td>\n",
       "      <td>2.211800e+04</td>\n",
       "      <td>1.024000e+03</td>\n",
       "      <td>1.024000e+03</td>\n",
       "      <td>2.547000e+03</td>\n",
       "      <td>3.000000e+00</td>\n",
       "      <td>1.835000e+03</td>\n",
       "      <td>1.002480e+05</td>\n",
       "      <td>2.210000e+02</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 id         click      ...                C20           C21\n",
       "count  1.000000e+07  1.000000e+07      ...       1.000000e+07  1.000000e+07\n",
       "mean   9.221663e+18  1.661357e-01      ...       4.927169e+04  9.371292e+01\n",
       "std    5.320360e+18  3.722024e-01      ...       5.004919e+04  6.752872e+01\n",
       "min    2.052565e+12  0.000000e+00      ...      -1.000000e+00  1.300000e+01\n",
       "25%    4.616747e+18  0.000000e+00      ...      -1.000000e+00  3.300000e+01\n",
       "50%    9.236241e+18  0.000000e+00      ...      -1.000000e+00  7.900000e+01\n",
       "75%    1.382024e+19  0.000000e+00      ...       1.000840e+05  1.570000e+02\n",
       "max    1.844674e+19  1.000000e+00      ...       1.002480e+05  2.210000e+02\n",
       "\n",
       "[8 rows x 15 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据探索\n",
    "### 1、查看click的分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1:1661357\n",
      "0:8338643\n",
      "rate=0.19923589485723275\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train_data.click)\n",
    "plt.xlabel('Click')\n",
    "plt.ylabel('Number of click')\n",
    "positive_num = train_data[train_data.click == 1].iloc[:,0].size\n",
    "negative_num = train_data[train_data.click == 0].iloc[:,0].size\n",
    "rate = positive_num/float(negative_num)\n",
    "print('1:{}\\n0:{}\\nrate={}'.format(positive_num, negative_num, rate))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### *正反数据比例大概是1：5,数据分布算是比较平衡*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2、时间特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0   2014-10-21\n",
       "1   2014-10-21\n",
       "2   2014-10-21\n",
       "3   2014-10-21\n",
       "4   2014-10-21\n",
       "Name: date, dtype: datetime64[ns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "date_type = lambda x: pd.datetime.strptime(x, \"%y%m%d%H\")\n",
    "train_data['date'] = train_data.hour.astype('str').apply(date_type)\n",
    "train_data['date'].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    21\n",
       "1    21\n",
       "2    21\n",
       "3    21\n",
       "4    21\n",
       "Name: day, dtype: int64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data['day'] = train_data.date.apply(lambda index: index.day)\n",
    "train_data.day.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    1.000000e+07\n",
       "mean     1.021407e+01\n",
       "std      6.037293e+00\n",
       "min      0.000000e+00\n",
       "25%      5.000000e+00\n",
       "50%      1.000000e+01\n",
       "75%      1.500000e+01\n",
       "max      2.300000e+01\n",
       "Name: hour_day, dtype: float64"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data['hour_day'] = train_data.date.apply(lambda x: x.hour)\n",
    "train_data.hour_day.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f58b10510f0>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_data.groupby(['hour_day', 'click']).size().unstack().plot(kind='bar', stacked=True, title=\"Hours of the day\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>click</th>\n",
       "      <th>hour</th>\n",
       "      <th>C1</th>\n",
       "      <th>banner_pos</th>\n",
       "      <th>site_id</th>\n",
       "      <th>site_domain</th>\n",
       "      <th>site_category</th>\n",
       "      <th>app_id</th>\n",
       "      <th>app_domain</th>\n",
       "      <th>app_category</th>\n",
       "      <th>device_id</th>\n",
       "      <th>device_ip</th>\n",
       "      <th>device_model</th>\n",
       "      <th>device_type</th>\n",
       "      <th>device_conn_type</th>\n",
       "      <th>C14</th>\n",
       "      <th>C15</th>\n",
       "      <th>C16</th>\n",
       "      <th>C17</th>\n",
       "      <th>C18</th>\n",
       "      <th>C19</th>\n",
       "      <th>C20</th>\n",
       "      <th>C21</th>\n",
       "      <th>date</th>\n",
       "      <th>day</th>\n",
       "      <th>hour_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.000009e+18</td>\n",
       "      <td>0</td>\n",
       "      <td>14102100</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>ddd2926e</td>\n",
       "      <td>44956a24</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>15706</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>79</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.000017e+19</td>\n",
       "      <td>0</td>\n",
       "      <td>14102100</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>96809ac8</td>\n",
       "      <td>711ee120</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>15704</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>100084</td>\n",
       "      <td>79</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.000037e+19</td>\n",
       "      <td>0</td>\n",
       "      <td>14102100</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>b3cf8def</td>\n",
       "      <td>8a4875bd</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>15704</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>100084</td>\n",
       "      <td>79</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.000064e+19</td>\n",
       "      <td>0</td>\n",
       "      <td>14102100</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>e8275b8f</td>\n",
       "      <td>6332421a</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>15706</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>100084</td>\n",
       "      <td>79</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.000068e+19</td>\n",
       "      <td>0</td>\n",
       "      <td>14102100</td>\n",
       "      <td>1005</td>\n",
       "      <td>1</td>\n",
       "      <td>fe8cc448</td>\n",
       "      <td>9166c161</td>\n",
       "      <td>0569f928</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>9644d0bf</td>\n",
       "      <td>779d90c2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>18993</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>2161</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>157</td>\n",
       "      <td>2014-10-21</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             id  click      hour    C1   ...     C21       date day hour_day\n",
       "0  1.000009e+18      0  14102100  1005   ...      79 2014-10-21  21        0\n",
       "1  1.000017e+19      0  14102100  1005   ...      79 2014-10-21  21        0\n",
       "2  1.000037e+19      0  14102100  1005   ...      79 2014-10-21  21        0\n",
       "3  1.000064e+19      0  14102100  1005   ...      79 2014-10-21  21        0\n",
       "4  1.000068e+19      0  14102100  1005   ...     157 2014-10-21  21        0\n",
       "\n",
       "[5 rows x 27 columns]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### *时间提供的是10天的数据，但是在做处理时，实际选取的是前10M的数据，所以 天 这个特征直接使用的话可能不太好；可以把这十天的数据按照周末和工作日进行等比抽取一部分做为训练数据*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3、广告位置特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    7487404\n",
       "1    2501578\n",
       "5       3856\n",
       "2       3230\n",
       "7       2444\n",
       "4       1403\n",
       "3         85\n",
       "Name: banner_pos, dtype: int64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.banner_pos.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f58d0b45048>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "banner_position = train_data.groupby(['banner_pos', 'click']).size().unstack()\n",
    "banner_position.plot(kind='bar', stacked=True, title='Banner position')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### *类别为0和1的数目较多，但是考虑不同的位置上，广告点击的比例占比，然后对比下*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4、位置特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>site_id</th>\n",
       "      <th>site_domain</th>\n",
       "      <th>site_category</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>fe8cc448</td>\n",
       "      <td>9166c161</td>\n",
       "      <td>0569f928</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    site_id site_domain site_category\n",
       "0  1fbe01fe    f3845767      28905ebd\n",
       "1  1fbe01fe    f3845767      28905ebd\n",
       "2  1fbe01fe    f3845767      28905ebd\n",
       "3  1fbe01fe    f3845767      28905ebd\n",
       "4  fe8cc448    9166c161      0569f928"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "site_category = ['site_id', 'site_domain', 'site_category']\n",
    "train_data[site_category].head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### hash值？不知道是什么"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "**************************\n",
      "85f751fd    3809647\n",
      "1fbe01fe    1533362\n",
      "e151e245     488789\n",
      "d9750ee7     266545\n",
      "5b08c53b     207364\n",
      "856e6d3f     206218\n",
      "5bcf81a2     181571\n",
      "5b4d2eda     148510\n",
      "a7853007     131487\n",
      "b7e9786d      91644\n",
      "5ee41ff2      88083\n",
      "6399eda6      85679\n",
      "6256f5b4      77204\n",
      "12fb4121      71989\n",
      "5114c672      71731\n",
      "17caea14      65181\n",
      "0a742914      57240\n",
      "6ec06dbd      56813\n",
      "57fe1b20      56155\n",
      "bb4524e7      55890\n",
      "e8f79e60      54708\n",
      "e3c09f3a      50534\n",
      "d6137915      49500\n",
      "83a0ad1a      49259\n",
      "e4d8dd7b      48482\n",
      "16c73019      44123\n",
      "6c5b482c      39464\n",
      "93eaba74      37049\n",
      "43d6df75      36007\n",
      "9a977531      32824\n",
      "             ...   \n",
      "0213b620          1\n",
      "1418cff1          1\n",
      "218ab157          1\n",
      "0c207bcb          1\n",
      "d197bc47          1\n",
      "48ffbc2f          1\n",
      "cde143f8          1\n",
      "c8662293          1\n",
      "c7b9878c          1\n",
      "4b9e88fd          1\n",
      "77286d1c          1\n",
      "f28eeb75          1\n",
      "50ac326d          1\n",
      "3cba8d1f          1\n",
      "837faadc          1\n",
      "d155e039          1\n",
      "93f1f058          1\n",
      "ae4d9eb1          1\n",
      "cc232261          1\n",
      "e89211aa          1\n",
      "3d1a0296          1\n",
      "4f9e41f2          1\n",
      "44a0a224          1\n",
      "6eb6ebcf          1\n",
      "2ceda8e7          1\n",
      "84f2a3e1          1\n",
      "46e56230          1\n",
      "1d764032          1\n",
      "e52d8db4          1\n",
      "4e14d193          1\n",
      "Name: site_id, Length: 3496, dtype: int64\n",
      "**************************\n",
      "c4e18dd6    3939930\n",
      "f3845767    1533362\n",
      "7e091613     652522\n",
      "98572c79     287557\n",
      "7687a86e     283877\n",
      "58a89a43     206218\n",
      "9d54950b     187802\n",
      "16a36ef3     160526\n",
      "d262cf1e     107347\n",
      "b12b9f85      92378\n",
      "6b59f079      89780\n",
      "17d996e6      89074\n",
      "968765cd      85679\n",
      "28f93029      77204\n",
      "3f2f3819      71731\n",
      "27e3c518      66884\n",
      "0dde25ec      65181\n",
      "510bd839      57240\n",
      "5b626596      56438\n",
      "d733bbc3      55890\n",
      "c4342784      54708\n",
      "bb1ef334      49501\n",
      "5c9ae867      49259\n",
      "a17bde68      48482\n",
      "c1aa3c04      47299\n",
      "7256c623      44878\n",
      "8025317b      44123\n",
      "a434fa42      39047\n",
      "de0f0f82      32497\n",
      "c7ca3108      32091\n",
      "             ...   \n",
      "35f9a6d7          1\n",
      "df762973          1\n",
      "f9276238          1\n",
      "71ffb37c          1\n",
      "7186cfa4          1\n",
      "a0043c26          1\n",
      "045220e9          1\n",
      "02636cae          1\n",
      "e00068c7          1\n",
      "2964b3da          1\n",
      "37c1db67          1\n",
      "2ffa5a21          1\n",
      "800fea1f          1\n",
      "90e65fda          1\n",
      "c1f4d4ae          1\n",
      "6ae74c7e          1\n",
      "c314d3ef          1\n",
      "f6033f84          1\n",
      "d497977f          1\n",
      "afb1ee36          1\n",
      "6dbc7d72          1\n",
      "5bf26b3d          1\n",
      "0e2f85d7          1\n",
      "87f16bef          1\n",
      "6e20024b          1\n",
      "1f1bc9bf          1\n",
      "53a4f187          1\n",
      "3a8e4c66          1\n",
      "ee3249a6          1\n",
      "c709db39          1\n",
      "Name: site_domain, Length: 4585, dtype: int64\n",
      "**************************\n",
      "50e219e0    4169502\n",
      "f028772b    3038300\n",
      "28905ebd    1817654\n",
      "3e814130     736135\n",
      "f66779e6      92571\n",
      "335d28a8      44296\n",
      "75fa27f6      28605\n",
      "76b2941d      27707\n",
      "72722551      13868\n",
      "0569f928       9077\n",
      "70fb0e29       8249\n",
      "c0dd3be3       6405\n",
      "dedf689d       4853\n",
      "a818d37a       1586\n",
      "e787de0e        367\n",
      "42a36e14        343\n",
      "bcf865d9        252\n",
      "5378d028        105\n",
      "8fd0aea4         93\n",
      "9ccfa2ea         23\n",
      "74073276          5\n",
      "c706e647          2\n",
      "110ab22d          2\n",
      "Name: site_category, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "site = train_data[site_category]\n",
    "print('**************************')\n",
    "print(site.site_id.value_counts())\n",
    "print('**************************')\n",
    "print(site.site_domain.value_counts())\n",
    "print('**************************')\n",
    "print(site.site_category.value_counts())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "site_id:3496\n",
      "site_domain:4585\n",
      "site_category:23\n"
     ]
    }
   ],
   "source": [
    "print(\"site_id:%d\"%(site.site_id.unique().size))\n",
    "print(\"site_domain:%d\"%(site.site_domain.unique().size))\n",
    "print(\"site_category:%d\"%(site.site_category.unique().size))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### *每个类别的取值很多，之间独热编码估计特征维度特别大，但是每个类别的分布情况又不同，所以可以根据分布情况考虑进行数目较多的保留，剩余的分为其他*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5、APP特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>app_id</th>\n",
       "      <th>app_domain</th>\n",
       "      <th>app_category</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     app_id app_domain app_category\n",
       "0  ecad2386   7801e8d9     07d7df22\n",
       "1  ecad2386   7801e8d9     07d7df22\n",
       "2  ecad2386   7801e8d9     07d7df22\n",
       "3  ecad2386   7801e8d9     07d7df22\n",
       "4  ecad2386   7801e8d9     07d7df22"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "app_category = ['app_id', 'app_domain', 'app_category']\n",
    "train_data[app_category].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "********************************\n",
      "<bound method IndexOpsMixin.value_counts of 0          ecad2386\n",
      "1          ecad2386\n",
      "2          ecad2386\n",
      "3          ecad2386\n",
      "4          ecad2386\n",
      "5          ecad2386\n",
      "6          ecad2386\n",
      "7          ecad2386\n",
      "8          ecad2386\n",
      "9          ecad2386\n",
      "10         ecad2386\n",
      "11         ecad2386\n",
      "12         ecad2386\n",
      "13         ecad2386\n",
      "14         98fed791\n",
      "15         ecad2386\n",
      "16         ecad2386\n",
      "17         ecad2386\n",
      "18         ecad2386\n",
      "19         66a5f0f3\n",
      "20         ecad2386\n",
      "21         ecad2386\n",
      "22         ecad2386\n",
      "23         ecad2386\n",
      "24         ecad2386\n",
      "25         ffc6ffd0\n",
      "26         ecad2386\n",
      "27         54c5d545\n",
      "28         ecad2386\n",
      "29         ecad2386\n",
      "             ...   \n",
      "9999970    ecad2386\n",
      "9999971    ecad2386\n",
      "9999972    42f5fcdb\n",
      "9999973    ecad2386\n",
      "9999974    ecad2386\n",
      "9999975    ecad2386\n",
      "9999976    ecad2386\n",
      "9999977    c1d5c84d\n",
      "9999978    e2fcccd2\n",
      "9999979    ecad2386\n",
      "9999980    ecad2386\n",
      "9999981    51cedd4e\n",
      "9999982    ecad2386\n",
      "9999983    ecad2386\n",
      "9999984    ecad2386\n",
      "9999985    ecad2386\n",
      "9999986    ecad2386\n",
      "9999987    ecad2386\n",
      "9999988    ecad2386\n",
      "9999989    ecad2386\n",
      "9999990    ecad2386\n",
      "9999991    ecad2386\n",
      "9999992    54c5d545\n",
      "9999993    ecad2386\n",
      "9999994    ecad2386\n",
      "9999995    ecad2386\n",
      "9999996    ecad2386\n",
      "9999997    7358e05e\n",
      "9999998    a5184c22\n",
      "9999999    66f5e02e\n",
      "Name: app_id, Length: 10000000, dtype: object>\n",
      "5469\n",
      "********************************\n",
      "<bound method IndexOpsMixin.value_counts of 0          7801e8d9\n",
      "1          7801e8d9\n",
      "2          7801e8d9\n",
      "3          7801e8d9\n",
      "4          7801e8d9\n",
      "5          7801e8d9\n",
      "6          7801e8d9\n",
      "7          7801e8d9\n",
      "8          7801e8d9\n",
      "9          7801e8d9\n",
      "10         7801e8d9\n",
      "11         7801e8d9\n",
      "12         7801e8d9\n",
      "13         7801e8d9\n",
      "14         d9b5648e\n",
      "15         7801e8d9\n",
      "16         7801e8d9\n",
      "17         7801e8d9\n",
      "18         7801e8d9\n",
      "19         d9b5648e\n",
      "20         7801e8d9\n",
      "21         7801e8d9\n",
      "22         7801e8d9\n",
      "23         7801e8d9\n",
      "24         7801e8d9\n",
      "25         7801e8d9\n",
      "26         7801e8d9\n",
      "27         2347f47a\n",
      "28         7801e8d9\n",
      "29         7801e8d9\n",
      "             ...   \n",
      "9999970    7801e8d9\n",
      "9999971    7801e8d9\n",
      "9999972    2347f47a\n",
      "9999973    7801e8d9\n",
      "9999974    7801e8d9\n",
      "9999975    7801e8d9\n",
      "9999976    7801e8d9\n",
      "9999977    2347f47a\n",
      "9999978    5c5a694b\n",
      "9999979    7801e8d9\n",
      "9999980    7801e8d9\n",
      "9999981    aefc06bd\n",
      "9999982    7801e8d9\n",
      "9999983    7801e8d9\n",
      "9999984    7801e8d9\n",
      "9999985    7801e8d9\n",
      "9999986    7801e8d9\n",
      "9999987    7801e8d9\n",
      "9999988    7801e8d9\n",
      "9999989    7801e8d9\n",
      "9999990    7801e8d9\n",
      "9999991    7801e8d9\n",
      "9999992    2347f47a\n",
      "9999993    7801e8d9\n",
      "9999994    7801e8d9\n",
      "9999995    7801e8d9\n",
      "9999996    7801e8d9\n",
      "9999997    b9528b13\n",
      "9999998    b8d325c3\n",
      "9999999    6f7ca2ba\n",
      "Name: app_domain, Length: 10000000, dtype: object>\n",
      "390\n",
      "********************************\n",
      "<bound method IndexOpsMixin.value_counts of 0          07d7df22\n",
      "1          07d7df22\n",
      "2          07d7df22\n",
      "3          07d7df22\n",
      "4          07d7df22\n",
      "5          07d7df22\n",
      "6          07d7df22\n",
      "7          07d7df22\n",
      "8          07d7df22\n",
      "9          07d7df22\n",
      "10         07d7df22\n",
      "11         07d7df22\n",
      "12         07d7df22\n",
      "13         07d7df22\n",
      "14         0f2161f8\n",
      "15         07d7df22\n",
      "16         07d7df22\n",
      "17         07d7df22\n",
      "18         07d7df22\n",
      "19         cef3e649\n",
      "20         07d7df22\n",
      "21         07d7df22\n",
      "22         07d7df22\n",
      "23         07d7df22\n",
      "24         07d7df22\n",
      "25         0f2161f8\n",
      "26         07d7df22\n",
      "27         0f2161f8\n",
      "28         07d7df22\n",
      "29         07d7df22\n",
      "             ...   \n",
      "9999970    07d7df22\n",
      "9999971    07d7df22\n",
      "9999972    0f2161f8\n",
      "9999973    07d7df22\n",
      "9999974    07d7df22\n",
      "9999975    07d7df22\n",
      "9999976    07d7df22\n",
      "9999977    0f2161f8\n",
      "9999978    0f2161f8\n",
      "9999979    07d7df22\n",
      "9999980    07d7df22\n",
      "9999981    0f2161f8\n",
      "9999982    07d7df22\n",
      "9999983    07d7df22\n",
      "9999984    07d7df22\n",
      "9999985    07d7df22\n",
      "9999986    07d7df22\n",
      "9999987    07d7df22\n",
      "9999988    07d7df22\n",
      "9999989    07d7df22\n",
      "9999990    07d7df22\n",
      "9999991    07d7df22\n",
      "9999992    0f2161f8\n",
      "9999993    07d7df22\n",
      "9999994    07d7df22\n",
      "9999995    07d7df22\n",
      "9999996    07d7df22\n",
      "9999997    cef3e649\n",
      "9999998    0f2161f8\n",
      "9999999    0f2161f8\n",
      "Name: app_category, Length: 10000000, dtype: object>\n",
      "33\n"
     ]
    }
   ],
   "source": [
    "app = train_data[app_category]\n",
    "print('********************************')\n",
    "print(app.app_id.value_counts)\n",
    "print(app.app_id.unique().size)\n",
    "print('********************************')\n",
    "print(app.app_domain.value_counts)\n",
    "print(app.app_domain.unique().size)\n",
    "print('********************************')\n",
    "print(app.app_category.value_counts)\n",
    "print(app.app_category.unique().size)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### *app的特征取值也很多，而且很多取值的数目为1，所以这个可以跟site的特征类似，做些特别的处理*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6、设备特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>device_id</th>\n",
       "      <th>device_ip</th>\n",
       "      <th>device_model</th>\n",
       "      <th>device_type</th>\n",
       "      <th>device_conn_type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>a99f214a</td>\n",
       "      <td>ddd2926e</td>\n",
       "      <td>44956a24</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>a99f214a</td>\n",
       "      <td>96809ac8</td>\n",
       "      <td>711ee120</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>a99f214a</td>\n",
       "      <td>b3cf8def</td>\n",
       "      <td>8a4875bd</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>a99f214a</td>\n",
       "      <td>e8275b8f</td>\n",
       "      <td>6332421a</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>a99f214a</td>\n",
       "      <td>9644d0bf</td>\n",
       "      <td>779d90c2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  device_id device_ip        ...        device_type  device_conn_type\n",
       "0  a99f214a  ddd2926e        ...                  1                 2\n",
       "1  a99f214a  96809ac8        ...                  1                 0\n",
       "2  a99f214a  b3cf8def        ...                  1                 0\n",
       "3  a99f214a  e8275b8f        ...                  1                 0\n",
       "4  a99f214a  9644d0bf        ...                  1                 0\n",
       "\n",
       "[5 rows x 5 columns]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "device_category = ['device_id','device_ip', 'device_model', 'device_type', 'device_conn_type']\n",
    "device = train_data[device_category]\n",
    "device.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000000\n",
      "786741\n"
     ]
    }
   ],
   "source": [
    "print(train_data.shape[0])\n",
    "print(device.device_id.unique().size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4\n",
      "1    9356219\n",
      "0     448593\n",
      "4     171529\n",
      "5      23659\n",
      "Name: device_type, dtype: int64\n",
      "4\n",
      "0    8918789\n",
      "2     881432\n",
      "3     187458\n",
      "5      12321\n",
      "Name: device_conn_type, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "print(device.device_type.unique().size)\n",
    "print(device.device_type.value_counts())\n",
    "print(device.device_conn_type.unique().size)\n",
    "print(device.device_conn_type.value_counts())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### *设备ID应该跟用户ID类似，没什么意义才对，但是这个取值有很多相似的，也就是说用户对有*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f58d0a3b7f0>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_data.groupby(['device_type', 'click']).size().unstack().plot(kind='bar', stacked=True, title=\"Device type\")\n",
    "train_data.groupby(['device_conn_type', 'click']).size().unstack().plot(kind='bar', stacked=True, title=\"Device connect type\")\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### *虽然不同的设备类型和设备连接类型中样本的数目不同，但是主要还是可以考虑不同类型中的广告点击率的占比*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 7、其他类型特征"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### *一些脱敏特征*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 10000000 entries, 0 to 9999999\n",
      "Data columns (total 9 columns):\n",
      "C1     int64\n",
      "C14    int64\n",
      "C15    int64\n",
      "C16    int64\n",
      "C17    int64\n",
      "C18    int64\n",
      "C19    int64\n",
      "C20    int64\n",
      "C21    int64\n",
      "dtypes: int64(9)\n",
      "memory usage: 686.6 MB\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>C1</th>\n",
       "      <th>C14</th>\n",
       "      <th>C15</th>\n",
       "      <th>C16</th>\n",
       "      <th>C17</th>\n",
       "      <th>C18</th>\n",
       "      <th>C19</th>\n",
       "      <th>C20</th>\n",
       "      <th>C21</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1005</td>\n",
       "      <td>15706</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1005</td>\n",
       "      <td>15704</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>100084</td>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1005</td>\n",
       "      <td>15704</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>100084</td>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1005</td>\n",
       "      <td>15706</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>100084</td>\n",
       "      <td>79</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1005</td>\n",
       "      <td>18993</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>2161</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>157</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     C1    C14  C15  C16   C17  C18  C19     C20  C21\n",
       "0  1005  15706  320   50  1722    0   35      -1   79\n",
       "1  1005  15704  320   50  1722    0   35  100084   79\n",
       "2  1005  15704  320   50  1722    0   35  100084   79\n",
       "3  1005  15706  320   50  1722    0   35  100084   79\n",
       "4  1005  18993  320   50  2161    0   35      -1  157"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "any_category = ['C1', 'C14', 'C15', 'C16', 'C17', 'C18', 'C19', 'C20', 'C21']\n",
    "any_category_data = train_data[any_category]\n",
    "any_category_data.info()\n",
    "any_category_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>C1</th>\n",
       "      <th>C14</th>\n",
       "      <th>C15</th>\n",
       "      <th>C16</th>\n",
       "      <th>C17</th>\n",
       "      <th>C18</th>\n",
       "      <th>C19</th>\n",
       "      <th>C20</th>\n",
       "      <th>C21</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "      <td>1.000000e+07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.004979e+03</td>\n",
       "      <td>1.848285e+04</td>\n",
       "      <td>3.179269e+02</td>\n",
       "      <td>5.912548e+01</td>\n",
       "      <td>2.082423e+03</td>\n",
       "      <td>1.316058e+00</td>\n",
       "      <td>1.772594e+02</td>\n",
       "      <td>4.927169e+04</td>\n",
       "      <td>9.371292e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>9.959851e-01</td>\n",
       "      <td>4.869140e+03</td>\n",
       "      <td>2.520062e+01</td>\n",
       "      <td>4.641713e+01</td>\n",
       "      <td>5.935536e+02</td>\n",
       "      <td>1.379968e+00</td>\n",
       "      <td>3.237208e+02</td>\n",
       "      <td>5.004919e+04</td>\n",
       "      <td>6.752872e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.001000e+03</td>\n",
       "      <td>3.750000e+02</td>\n",
       "      <td>1.200000e+02</td>\n",
       "      <td>2.000000e+01</td>\n",
       "      <td>1.120000e+02</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>3.300000e+01</td>\n",
       "      <td>-1.000000e+00</td>\n",
       "      <td>1.300000e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.005000e+03</td>\n",
       "      <td>1.692000e+04</td>\n",
       "      <td>3.200000e+02</td>\n",
       "      <td>5.000000e+01</td>\n",
       "      <td>1.863000e+03</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>3.500000e+01</td>\n",
       "      <td>-1.000000e+00</td>\n",
       "      <td>3.300000e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.005000e+03</td>\n",
       "      <td>2.035200e+04</td>\n",
       "      <td>3.200000e+02</td>\n",
       "      <td>5.000000e+01</td>\n",
       "      <td>2.333000e+03</td>\n",
       "      <td>0.000000e+00</td>\n",
       "      <td>3.900000e+01</td>\n",
       "      <td>-1.000000e+00</td>\n",
       "      <td>7.900000e+01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.005000e+03</td>\n",
       "      <td>2.175900e+04</td>\n",
       "      <td>3.200000e+02</td>\n",
       "      <td>5.000000e+01</td>\n",
       "      <td>2.502000e+03</td>\n",
       "      <td>3.000000e+00</td>\n",
       "      <td>1.670000e+02</td>\n",
       "      <td>1.000840e+05</td>\n",
       "      <td>1.570000e+02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.012000e+03</td>\n",
       "      <td>2.211800e+04</td>\n",
       "      <td>1.024000e+03</td>\n",
       "      <td>1.024000e+03</td>\n",
       "      <td>2.547000e+03</td>\n",
       "      <td>3.000000e+00</td>\n",
       "      <td>1.835000e+03</td>\n",
       "      <td>1.002480e+05</td>\n",
       "      <td>2.210000e+02</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 C1           C14      ...                C20           C21\n",
       "count  1.000000e+07  1.000000e+07      ...       1.000000e+07  1.000000e+07\n",
       "mean   1.004979e+03  1.848285e+04      ...       4.927169e+04  9.371292e+01\n",
       "std    9.959851e-01  4.869140e+03      ...       5.004919e+04  6.752872e+01\n",
       "min    1.001000e+03  3.750000e+02      ...      -1.000000e+00  1.300000e+01\n",
       "25%    1.005000e+03  1.692000e+04      ...      -1.000000e+00  3.300000e+01\n",
       "50%    1.005000e+03  2.035200e+04      ...      -1.000000e+00  7.900000e+01\n",
       "75%    1.005000e+03  2.175900e+04      ...       1.000840e+05  1.570000e+02\n",
       "max    1.012000e+03  2.211800e+04      ...       1.002480e+05  2.210000e+02\n",
       "\n",
       "[8 rows x 9 columns]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "any_category_data.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 8、观察特征直接的相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['id', 'click', 'hour', 'C1', 'banner_pos', 'site_id', 'site_domain',\n",
       "       'site_category', 'app_id', 'app_domain', 'app_category', 'device_id',\n",
       "       'device_ip', 'device_model', 'device_type', 'device_conn_type', 'C14',\n",
       "       'C15', 'C16', 'C17', 'C18', 'C19', 'C20', 'C21', 'date', 'day',\n",
       "       'hour_day'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_category = ['id', 'C1', 'banner_pos', 'site_id', 'site_domain',\n",
    "               'site_category', 'app_id', 'app_domain', 'app_category', 'device_id',\n",
    "               'device_ip', 'device_model', 'device_type', 'device_conn_type', 'C14',\n",
    "               'C15', 'C16', 'C17', 'C18', 'C19', 'C20', 'C21', 'day',\n",
    "               'hour_day']\n",
    "y_category = ['click']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>C1</th>\n",
       "      <th>banner_pos</th>\n",
       "      <th>site_id</th>\n",
       "      <th>site_domain</th>\n",
       "      <th>site_category</th>\n",
       "      <th>app_id</th>\n",
       "      <th>app_domain</th>\n",
       "      <th>app_category</th>\n",
       "      <th>device_id</th>\n",
       "      <th>device_ip</th>\n",
       "      <th>device_model</th>\n",
       "      <th>device_type</th>\n",
       "      <th>device_conn_type</th>\n",
       "      <th>C14</th>\n",
       "      <th>C15</th>\n",
       "      <th>C16</th>\n",
       "      <th>C17</th>\n",
       "      <th>C18</th>\n",
       "      <th>C19</th>\n",
       "      <th>C20</th>\n",
       "      <th>C21</th>\n",
       "      <th>day</th>\n",
       "      <th>hour_day</th>\n",
       "      <th>click</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.000009e+18</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>ddd2926e</td>\n",
       "      <td>44956a24</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>15706</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>79</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.000017e+19</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>96809ac8</td>\n",
       "      <td>711ee120</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>15704</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>100084</td>\n",
       "      <td>79</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.000037e+19</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>b3cf8def</td>\n",
       "      <td>8a4875bd</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>15704</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>100084</td>\n",
       "      <td>79</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.000064e+19</td>\n",
       "      <td>1005</td>\n",
       "      <td>0</td>\n",
       "      <td>1fbe01fe</td>\n",
       "      <td>f3845767</td>\n",
       "      <td>28905ebd</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>e8275b8f</td>\n",
       "      <td>6332421a</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>15706</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>1722</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>100084</td>\n",
       "      <td>79</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.000068e+19</td>\n",
       "      <td>1005</td>\n",
       "      <td>1</td>\n",
       "      <td>fe8cc448</td>\n",
       "      <td>9166c161</td>\n",
       "      <td>0569f928</td>\n",
       "      <td>ecad2386</td>\n",
       "      <td>7801e8d9</td>\n",
       "      <td>07d7df22</td>\n",
       "      <td>a99f214a</td>\n",
       "      <td>9644d0bf</td>\n",
       "      <td>779d90c2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>18993</td>\n",
       "      <td>320</td>\n",
       "      <td>50</td>\n",
       "      <td>2161</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>-1</td>\n",
       "      <td>157</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             id    C1  banner_pos   site_id  ...   C21 day hour_day click\n",
       "0  1.000009e+18  1005           0  1fbe01fe  ...    79  21        0     0\n",
       "1  1.000017e+19  1005           0  1fbe01fe  ...    79  21        0     0\n",
       "2  1.000037e+19  1005           0  1fbe01fe  ...    79  21        0     0\n",
       "3  1.000064e+19  1005           0  1fbe01fe  ...    79  21        0     0\n",
       "4  1.000068e+19  1005           1  fe8cc448  ...   157  21        0     0\n",
       "\n",
       "[5 rows x 25 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "temp_data = train_data[X_category + y_category]\n",
    "cols = temp_data.columns\n",
    "temp_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f58d0a68b38>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuUAAALECAYAAACvyk5tAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xd4VNXWx/HvSkhAVLpAEpCuooJ0UUGk9yYSLNg7YO+C4EVEve8VKxZULopKFyF0FBCDIFVapBOBhNCkFwmT/f4xQ8gkAQJX5kT9fZ5nHjL77LP3Oif8sWZl7zPmnENERERERLwT5nUAIiIiIiL/dErKRUREREQ8pqRcRERERMRjSspFRERERDympFxERERExGNKykVEREREPKakXERERETEY0rKRUREREQ8pqRcRERERMRjSspFRERERDyWx+sAREREROSfJ3XnBufl/BHFypuX82emSrmIiIiIiMeUlIuIiIiIeEzLV0REREQk9NJ8XkeQq6hSLiIiIiLiMVXKRURERCT0XJrXEeQqqpSLiIiIiHhMSbmIiIiIiMe0fEVEREREQi9Ny1cyUqVcRERERMRjqpSLiIiISMg5bfQMokq5iIiIiIjHlJSLiIiIiHhMy1dEREREJPS00TOIKuUiIiIiIh5TpVxEREREQk8bPYOoUi4iIiIi4jEl5SIiIiIiHtPyFREREREJvTSf1xHkKqqUi4iIiIh4TJVyEREREQk9bfQMokq5iIiIiIjHlJSLiIiIiHhMy1dEREREJPT0jZ5BVCkXEREREfGYknIREREREY9p+YqIiIiIhJzT01eCqFIuIiIiIuIxVcpFREREJPS00TOIKuUiIiIiIh5TUi4iIiIi4jEtXxERERGR0NNGzyCqlIuIiIiIeEyVchEREREJvTSf1xHkKqqUi4iIiIh4TEm5iIiIiIjHtHxFRERERELvL7DR08xaAO8A4cCnzrnXMx1/C2gYeJsfKO6cKxQ45gOWB45tcs61O9VcSspFRERERDIxs3BgINAU2AIsMLPxzrmE432cc09k6P8IUD3DEIedc9VyOp+SchEREREJvdz/jZ51gHXOuQ0AZjYcaA8knKT/LUCfs51Ma8pFRERERLKKATZneL8l0JaFmZUBygEzMjTnM7OFZjbPzDqcbjJVykVERETkH8fMHgAeyNA0yDk36CyHuxkY7ZzL+JzHMs65JDMrD8wws+XOufUnG0BJuYiIiIiEnscbPQMJ+KmS8CSgdIb3pQJt2bkZ6J5p/KTAvxvMbBb+9eYnTcq1fEVEREREJKsFQCUzK2dmkfgT7/GZO5nZZUBhYG6GtsJmljfwczHgOk6+Fh1QpVxEREREvJDLN3o6546ZWQ9gKv5HIg52zq00s77AQufc8QT9ZmC4c85lOL0y8LGZpeEvgr+e8akt2bHg80VEREREzr0/lk31NAnNW7W5eTl/Zlq+IiIiIiLiMS1fEREREZGQC35QiahSLiIiIiLiMVXKRURERCT0PH4kYm6jSrmIiIiIiMeUlIuIiIiIeEzLV0REREQk9HL5c8pDTZVyERERERGPKSkXEREREfGYlq+IiIiISOjp6StBVCkXEREREfGYKuUiIiIiEnpp+kbPjFQpFxERERHxmCrluVjqzg3O6xgAIoqV9zoEERER+fOY1wFIVkrKRURERCT0tNEziJaviIiIiIh4TJVyEREREQk9faNnEFXKRUREREQ8pqRcRERERMRjWr4iIiIiIqGnjZ5BVCkXEREREfGYKuUiIiIiEnra6BlElXIREREREY8pKRcRERER8ZiWr4iIiIhI6Gn5ShBVyv+mevUfwPWtb6ZD14e8DkVERERETkNJ+TlmZj+dpH2Imd10rubt0KopHw3od66GFxEREfmfOOfz9JXbKCk/x5xz13oxb61qVShY4EIvphYRERGRM6Q15eeYmR1wzl1gZga8BzQFNgNHvY1MRERERHILJeWh0xG4FLgcKAEkAIM9jUhERETEK9roGUTLV0LnemCYc87nnEsGZmTXycweMLOFZrbw0y+GhTZCEREREfGEKuW5jHNuEDAIIHXnBudxOCIiIiLnhlOlPCNVykNnNtDFzMLNLApoeC4ne6bP69z24BMkbtpC4w5dGRM39VxOJyIiIiL/A1XKQ2cs0Aj/WvJNwNxzOdn//ev5czm8iIiIiPyJlJSfY865CwL/OqCHx+GIiIiI5A7a6BlEy1dERERERDympFxERERExGNaviIiIiIioaenrwRRpVxERERExGOqlIuIiIhI6GmjZxBVykVEREREPKakXERERETEY1q+IiIiIiKhp42eQVQpFxERERHxmCrlIiIiIhJ62ugZRJVyERERERGPqVKei50XXd/r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\n",
      "text/plain": [
       "<Figure size 864x864 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#计算下相关性\n",
    "corr = temp_data.corr().abs()\n",
    "mask = np.array(corr)\n",
    "mask[np.tril_indices_from(mask)] = False\n",
    "figsize(12,12)\n",
    "sns.heatmap(corr, mask=mask, vmax=.8, square=True, annot=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "site_category and app_category = 0.98\n",
      "C1 and site_id = 0.91\n",
      "device_id and device_type = 0.65\n"
     ]
    }
   ],
   "source": [
    "# 打印相关的特征\n",
    "threshold = 0.5\n",
    "corr_list = []\n",
    "size = corr.shape[0]\n",
    "\n",
    "for i in range(0, size):\n",
    "    for j in range(i+1, size):\n",
    "        if((corr.iloc[i, j] >= threshold and corr.iloc[i, j] <1) or (corr.iloc[i, j] < 0 and corr.iloc[i, j] <= -threshold)):\n",
    "            corr_list.append([corr.iloc[i,j], i, j])\n",
    "\n",
    "corr_list = sorted(corr_list, key = lambda x: -abs(x[0]))\n",
    "for v, i, j in corr_list:\n",
    "    print(\"%s and %s = %.2f\" %(cols[i], cols[j], v))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "temp_data.to_csv('temp.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
